package com.itextpdf.text.pdf.fonts; import com.itextpdf.testutils.CompareTool; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Font; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfWriter; import org.junit.BeforeClass; import org.junit.Test; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; public class EncodingTest { public final static String sourceFolder = "./src/test/resources/com/itextpdf/text/pdf/fonts/EncodingTest/"; private static String outFolder = "./target/com/itextpdf/text/pdf/fonts/EncodingTest/"; @BeforeClass public static void setUp() throws Exception { new File(outFolder).mkdirs(); } @Test public void exoticCharsTimesRomanTest() throws IOException, DocumentException, InterruptedException { String filename = "exoticCharsTimesRomanTest.pdf"; BaseFont bf = BaseFont.createFont(BaseFont.TIMES_ROMAN, BaseFont.WINANSI, true); Document doc = new Document(); PdfWriter.getInstance(doc, new FileOutputStream(outFolder + filename)); doc.open(); doc.newPage(); Paragraph p = new Paragraph(); p.setFont(new Font(bf)); p.add("\u0188"); doc.add(p); doc.close(); new CompareTool().compareByContent(outFolder + filename, sourceFolder + "cmp_" + filename, outFolder, "diff"); } @Test public void exoticCharsWithDifferencesTimesRomanTest() throws IOException, DocumentException, InterruptedException { String filename = "exoticCharsWithDifferencesTimesRomanTest.pdf"; BaseFont bf = BaseFont.createFont(BaseFont.TIMES_ROMAN, "# simple 32 0020 0188", true); Document doc = new Document(); PdfWriter.getInstance(doc, new FileOutputStream(outFolder + filename)); doc.open(); doc.newPage(); Paragraph p = new Paragraph(); p.setFont(new Font(bf)); p.add("\u0188"); doc.add(p); doc.close(); new CompareTool().compareByContent(outFolder + filename, sourceFolder + "cmp_" + filename, outFolder, "diff"); } @Test public void exoticCharsCourierTest() throws IOException, DocumentException, InterruptedException { String filename = "exoticCharsCourierTest.pdf"; BaseFont bf = BaseFont.createFont(BaseFont.COURIER, BaseFont.WINANSI, true); Document doc = new Document(); PdfWriter.getInstance(doc, new FileOutputStream(outFolder + filename)); doc.open(); doc.newPage(); Paragraph p = new Paragraph(); p.setFont(new Font(bf)); p.add("\u0188"); doc.add(p); doc.close(); new CompareTool().compareByContent(outFolder + filename, sourceFolder + "cmp_" + filename, outFolder, "diff"); } @Test public void exoticCharsWithDifferencesCourierTest() throws IOException, DocumentException, InterruptedException { String filename = "exoticCharsWithDifferencesCourierTest.pdf"; BaseFont bf = BaseFont.createFont(BaseFont.COURIER, "# simple 32 0020 0188", true); Document doc = new Document(); PdfWriter.getInstance(doc, new FileOutputStream(outFolder + filename)); doc.open(); doc.newPage(); Paragraph p = new Paragraph(); p.setFont(new Font(bf)); p.add("\u0188"); doc.add(p); doc.close(); new CompareTool().compareByContent(outFolder + filename, sourceFolder + "cmp_" + filename, outFolder, "diff"); } @Test public void surrogatePairTest() throws IOException, DocumentException, InterruptedException { String filename = "surrogatePairTest.pdf"; BaseFont bf = BaseFont.createFont(sourceFolder + "DejaVuSans.ttf", BaseFont.IDENTITY_H, true); Document doc = new Document(); PdfWriter.getInstance(doc, new FileOutputStream(outFolder + filename)); doc.open(); doc.newPage(); Paragraph p = new Paragraph(); p.setFont(new Font(bf)); p.add("\uD800\uDF1D"); doc.add(p); doc.close(); new CompareTool().compareByContent(outFolder + filename, sourceFolder + "cmp_" + filename, outFolder, "diff"); } @Test public void exoticCharsFreeSansTest() throws IOException, DocumentException, InterruptedException { String filename = "exoticCharsFreeSansTest.pdf"; BaseFont bf = BaseFont.createFont(sourceFolder + "FreeSans.ttf", BaseFont.WINANSI, true); Document doc = new Document(); PdfWriter.getInstance(doc, new FileOutputStream(outFolder + filename)); doc.open(); doc.newPage(); Paragraph p = new Paragraph(); p.setFont(new Font(bf)); p.add("\u0188"); doc.add(p); doc.close(); new CompareTool().compareByContent(outFolder + filename, sourceFolder + "cmp_" + filename, outFolder, "diff"); } @Test public void exoticCharsFreeSansWithDifferencesTest() throws IOException, DocumentException, InterruptedException { String filename = "exoticCharsFreeSansWithDifferencesTest.pdf"; BaseFont bf = BaseFont.createFont(sourceFolder + "FreeSans.ttf", "# simple 32 0020 1031D", true); Document doc = new Document(); PdfWriter.getInstance(doc, new FileOutputStream(outFolder + filename)); doc.open(); doc.newPage(); Paragraph p = new Paragraph(); p.setFont(new Font(bf)); p.add("\u0188"); doc.add(p); doc.close(); new CompareTool().compareByContent(outFolder + filename, sourceFolder + "cmp_" + filename, outFolder, "diff"); } @Test public void symbolDefaultFontTest() throws IOException, DocumentException, InterruptedException { String filename = "symbolDefaultFontTest.pdf"; BaseFont bf = BaseFont.createFont(BaseFont.SYMBOL, BaseFont.WINANSI, true); Document doc = new Document(); PdfWriter.getInstance(doc, new FileOutputStream(outFolder + filename)); doc.open(); doc.newPage(); Paragraph p = new Paragraph(); p.setFont(new Font(bf)); String str = new String(); for (int i = 32; i <=254; i++) { str+= (char)i; } p.add(str); doc.add(p); doc.close(); new CompareTool().compareByContent(outFolder + filename, sourceFolder + "cmp_" + filename, outFolder, "diff"); } @Test public void symbolFontWinansiTest() throws IOException, DocumentException, InterruptedException { String filename = "symbolFontWinansiTest.pdf"; BaseFont bf = BaseFont.createFont(sourceFolder + "Symbols1.ttf", BaseFont.WINANSI, true); Document doc = new Document(); PdfWriter.getInstance(doc, new FileOutputStream(outFolder + filename)); doc.open(); doc.newPage(); Paragraph p = new Paragraph(); p.setFont(new Font(bf)); String str = new String(); for (int i = 32; i <=254; i++) { str+= (char)i; } p.add(str); doc.add(p); doc.close(); new CompareTool().compareByContent(outFolder + filename, sourceFolder + "cmp_" + filename, outFolder, "diff"); } @Test public void symbolFontIdentityHTest() throws IOException, DocumentException, InterruptedException { String filename = "symbolFontIdentityHTest.pdf"; BaseFont bf = BaseFont.createFont(sourceFolder + "Symbols1.ttf", BaseFont.IDENTITY_H, true); Document doc = new Document(); PdfWriter.getInstance(doc, new FileOutputStream(outFolder + filename)); doc.open(); doc.newPage(); Paragraph p = new Paragraph(); p.setFont(new Font(bf)); String str = new String(); for (int i = 32; i <=254; i++) { str+= (char)i; } p.add(str); doc.add(p); doc.close(); new CompareTool().compareByContent(outFolder + filename, sourceFolder + "cmp_" + filename, outFolder, "diff"); } }